home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / dfue / term 4.6(?) / extras / source / term-source.lha / LibPanelPlus.c < prev    next >
C/C++ Source or Header  |  1996-03-18  |  13KB  |  641 lines

  1. /*
  2. **    LibPanelPlus.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifndef _GLOBAL_H
  11. #include "Global.h"
  12. #endif
  13.  
  14. enum    {    GAD_COMMAND=1000,
  15.         GAD_BUTTON1,GAD_BUTTON2,GAD_BUTTON3,GAD_BUTTON4,GAD_BUTTON5,
  16.         GAD_BUTTON6,GAD_BUTTON7,GAD_BUTTON8,GAD_BUTTON9,GAD_BUTTON10,
  17.         GAD_PAGER,GAD_PAGEGROUP,
  18.  
  19.         GAD_USE,GAD_CANCEL
  20.     };
  21.  
  22. VOID
  23. ASCIITransferPanel(struct Window *Window,struct Configuration *Config)
  24. {
  25.     STATIC LONG PageTitleID[4] =
  26.     {
  27.         MSG_INTERNAL_ASCII_TRANSFER_SEND_TXT,
  28.         MSG_INTERNAL_ASCII_TRANSFER_RECEIVE_TXT,
  29.         MSG_INTERNAL_ASCII_TRANSFER_GENERAL_TXT,
  30.         -1
  31.     };
  32.  
  33.     STATIC BYTE InitialPage = 0;
  34.  
  35.     struct TransferSettings     OldSettings;
  36.     struct LayoutHandle    *Handle;
  37.     STRPTR             PageTitle[4];
  38.  
  39.     LocalizeStringTable(PageTitle,PageTitleID);
  40.  
  41.     CopyMem(Config -> TransferConfig,&OldSettings,sizeof(struct TransferSettings));
  42.  
  43.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  44.         LH_LocaleHook,    &LocaleHook,
  45.     TAG_DONE))
  46.     {
  47.         struct Window *PanelWindow;
  48.  
  49.         LT_New(Handle,
  50.             LA_Type,    VERTICAL_KIND,
  51.         TAG_DONE);
  52.         {
  53.             LT_New(Handle,
  54.                 LA_Type,    VERTICAL_KIND,
  55.             TAG_DONE);
  56.             {
  57.                 LT_New(Handle,
  58.                     LA_Type,        TAB_KIND,
  59.                     LA_LabelID,        MSG_XFER_PAGE_TXT,
  60.                     LA_ID,            GAD_PAGER,
  61.                     GTCY_Labels,        PageTitle,
  62.                     LACY_AutoPageID,    GAD_PAGEGROUP,
  63.                     LACY_TabKey,        TRUE,
  64.                     LA_BYTE,        &InitialPage,
  65.                     LATB_FullWidth,        TRUE,
  66.                 TAG_DONE);
  67.  
  68.                 LT_EndGroup(Handle);
  69.             }
  70.  
  71.             LT_New(Handle,
  72.                 LA_Type,    VERTICAL_KIND,
  73.                 LA_ID,        GAD_PAGEGROUP,
  74.                 LAGR_ActivePage,InitialPage,
  75.             TAG_DONE);
  76.             {
  77.                 LT_New(Handle,
  78.                     LA_Type,    VERTICAL_KIND,
  79.                 TAG_DONE);
  80.                 {
  81.                     LT_New(Handle,
  82.                         LA_Type,    VERTICAL_KIND,
  83.                     TAG_DONE);
  84.                     {
  85.                         LT_New(Handle,
  86.                             LA_Type,    CYCLE_KIND,
  87.                             LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  88.                             LA_UBYTE,    &Config -> TransferConfig -> PacingMode,
  89.                             LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  90.                             LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  91.                         TAG_DONE);
  92.  
  93.                         LT_EndGroup(Handle);
  94.                     }
  95.  
  96.                     LT_New(Handle,
  97.                         LA_Type,    VERTICAL_KIND,
  98.                         LA_LabelID,    MSG_V36_0021,
  99.                     TAG_DONE);
  100.                     {
  101.                         LT_New(Handle,
  102.                             LA_Type,        SliderType,
  103.                             LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  104.                             GTSL_Min,        0,
  105.                             GTSL_Max,        10 * 100,
  106.                             LA_Chars,        10,
  107.                             LA_WORD,        &Config -> TransferConfig -> CharDelay,
  108.                             GTSL_LevelFormat,    "%s s",
  109.                             GTSL_DispFunc,        StandardShowTime,
  110.                         TAG_DONE);
  111.  
  112.                         LT_New(Handle,
  113.                             LA_Type,        SliderType,
  114.                             LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  115.                             GTSL_Min,        0,
  116.                             GTSL_Max,        10 * 100,
  117.                             LA_Chars,        10,
  118.                             LA_WORD,        &Config -> TransferConfig -> LineDelay,
  119.                             GTSL_LevelFormat,    "%s s",
  120.                             GTSL_DispFunc,        StandardShowTime,
  121.                         TAG_DONE);
  122.  
  123.                         LT_EndGroup(Handle);
  124.                     }
  125.  
  126.                     LT_New(Handle,
  127.                         LA_Type,    VERTICAL_KIND,
  128.                         LA_LabelID,    MSG_V36_0024,
  129.                     TAG_DONE);
  130.                     {
  131.                         LT_New(Handle,
  132.                             LA_Type,        STRING_KIND,
  133.                             LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  134.                             LA_STRPTR,        Config -> TransferConfig -> LinePrompt,
  135.                             LA_Chars,        10,
  136.                             GTST_MaxChars,        255,
  137.                         TAG_DONE);
  138.  
  139.                         LT_New(Handle,
  140.                             LA_Type,        SliderType,
  141.                             LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  142.                             GTSL_Min,        0,
  143.                             GTSL_Max,        10 * 100,
  144.                             LA_WORD,        &Config -> TransferConfig -> SendTimeout,
  145.                             GTSL_LevelFormat,    "%s s",
  146.                             GTSL_DispFunc,        StandardShowTime,
  147.                         TAG_DONE);
  148.  
  149.                         LT_EndGroup(Handle);
  150.                     }
  151.  
  152.  
  153.                     LT_New(Handle,
  154.                         LA_Type,    VERTICAL_KIND,
  155.                     TAG_DONE);
  156.                     {
  157.                         LT_New(Handle,
  158.                             LA_Type,    CYCLE_KIND,
  159.                             LA_LabelID,    MSG_TERMINALPANEL_SEND_CR_GAD,
  160.                             LA_BYTE,    &Config -> TransferConfig -> SendCR,
  161.                             GTCY_Labels,    EOL_Labels,
  162.                         TAG_DONE);
  163.  
  164.                         LT_New(Handle,
  165.                             LA_Type,    CYCLE_KIND,
  166.                             LA_LabelID,    MSG_TERMINALPANEL_SEND_LF_GAD,
  167.                             LA_BYTE,    &Config -> TransferConfig -> SendLF,
  168.                             GTCY_Labels,    EOL_Labels,
  169.                         TAG_DONE);
  170.  
  171.                         LT_EndGroup(Handle);
  172.                     }
  173.  
  174.                     LT_EndGroup(Handle);
  175.                 }
  176.  
  177.                 LT_New(Handle,
  178.                     LA_Type,    VERTICAL_KIND,
  179.                 TAG_DONE);
  180.                 {
  181.                     LT_New(Handle,
  182.                         LA_Type,    CYCLE_KIND,
  183.                         LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_CR_GAD,
  184.                         LA_BYTE,    &Config -> TransferConfig -> ReceiveCR,
  185.                         GTCY_Labels,    EOL_Labels,
  186.                     TAG_DONE);
  187.  
  188.                     LT_New(Handle,
  189.                         LA_Type,    CYCLE_KIND,
  190.                         LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_LF_GAD,
  191.                         LA_BYTE,    &Config -> TransferConfig -> ReceiveLF,
  192.                         GTCY_Labels,    EOL_Labels,
  193.                     TAG_DONE);
  194.  
  195.                     LT_New(Handle,
  196.                         LA_Type,    CHECKBOX_KIND,
  197.                         LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_IGNORE_DATA_PAST_ARNOLD_TXT,
  198.                         LA_BYTE,    &Config -> TransferConfig -> IgnoreDataPastArnold,
  199.                     TAG_DONE);
  200.  
  201.                     LT_New(Handle,
  202.                         LA_Type,    INTEGER_KIND,
  203.                         LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_TERMINATOR_CHAR_TXT,
  204.                         LA_BYTE,    &Config -> TransferConfig -> TerminatorChar,
  205.                         LAIN_Min,    0,
  206.                         LAIN_Max,    255,
  207.                     TAG_DONE);
  208.  
  209.                     LT_EndGroup(Handle);
  210.                 }
  211.  
  212.                 LT_New(Handle,
  213.                     LA_Type,    VERTICAL_KIND,
  214.                 TAG_DONE);
  215.                 {
  216.                     LT_New(Handle,
  217.                         LA_Type,    CHECKBOX_KIND,
  218.                         LA_LabelID,    MSG_LIBPANEL_QUIET_TRANSFER_GAD,
  219.                         LA_BYTE,    &Config -> TransferConfig -> QuietTransfer,
  220.                     TAG_DONE);
  221.  
  222.                     LT_New(Handle,
  223.                         LA_Type,    CHECKBOX_KIND,
  224.                         LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_STRIP_BIT_7_TXT,
  225.                         LA_BYTE,    &Config -> TransferConfig -> StripBit8,
  226.                     TAG_DONE);
  227.  
  228.                     LT_EndGroup(Handle);
  229.                 }
  230.  
  231.                 LT_EndGroup(Handle);
  232.             }
  233.  
  234.             LT_New(Handle,
  235.                 LA_Type,VERTICAL_KIND,
  236.             TAG_DONE);
  237.             {
  238.                 LT_New(Handle,
  239.                     LA_Type,    XBAR_KIND,
  240.                     LAXB_FullSize,    TRUE,
  241.                 TAG_DONE);
  242.  
  243.                 LT_EndGroup(Handle);
  244.             }
  245.  
  246.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  247.                 LAGR_SameSize,    TRUE,
  248.                 LAGR_Spread,    TRUE,
  249.             TAG_DONE);
  250.             {
  251.                 LT_New(Handle,
  252.                     LA_Type,    BUTTON_KIND,
  253.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  254.                     LA_ID,        GAD_USE,
  255.                     LABT_ReturnKey,    TRUE,
  256.                     LABT_ExtraFat,    TRUE,
  257.                 TAG_DONE);
  258.  
  259.                 LT_New(Handle,
  260.                     LA_Type,    BUTTON_KIND,
  261.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  262.                     LA_ID,        GAD_CANCEL,
  263.                     LABT_EscKey,    TRUE,
  264.                     LABT_ExtraFat,    TRUE,
  265.                 TAG_DONE);
  266.  
  267.                 LT_EndGroup(Handle);
  268.             }
  269.  
  270.             LT_EndGroup(Handle);
  271.         }
  272.  
  273.         if(PanelWindow = LT_Build(Handle,
  274.             LAWN_TitleID,        MSG_INTERNAL_ASCII_TRANSFER_TRANSFER_TXT,
  275.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  276.             LAWN_HelpHook,        &GuideHook,
  277.             LAWN_Parent,        Window,
  278.             WA_DepthGadget,        TRUE,
  279.             WA_CloseGadget,        TRUE,
  280.             WA_DragBar,        TRUE,
  281.             WA_RMBTrap,        TRUE,
  282.             WA_Activate,        TRUE,
  283.             WA_SimpleRefresh,    TRUE,
  284.         TAG_DONE))
  285.         {
  286.             struct IntuiMessage    *Message;
  287.             BOOL             Done = FALSE;
  288.             ULONG             MsgClass;
  289.             struct Gadget        *MsgGadget;
  290.  
  291.             GuideContext(CONTEXT_ASCII_TRANSFER_SETTINGS);
  292.  
  293.             PushWindow(PanelWindow);
  294.  
  295.             LT_ShowWindow(Handle,TRUE);
  296.  
  297.             do
  298.             {
  299.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  300.                 {
  301.                     CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  302.  
  303.                     break;
  304.                 }
  305.  
  306.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  307.                 {
  308.                     MsgClass    = Message -> Class;
  309.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  310.  
  311.                     LT_ReplyIMsg(Message);
  312.  
  313.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  314.                     {
  315.                         CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  316.  
  317.                         Done = TRUE;
  318.                     }
  319.  
  320.                     if(MsgClass == IDCMP_GADGETUP)
  321.                     {
  322.                         switch(MsgGadget -> GadgetID)
  323.                         {
  324.                             case GAD_USE:
  325.  
  326.                                 LT_UpdateStrings(Handle);
  327.  
  328.                                 Done = TRUE;
  329.                                 break;
  330.  
  331.                             case GAD_CANCEL:
  332.  
  333.                                 CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  334.  
  335.                                 Done = TRUE;
  336.                                 break;
  337.                         }
  338.                     }
  339.                 }
  340.             }
  341.             while(!Done);
  342.  
  343.             PopWindow();
  344.         }
  345.  
  346.         LT_DeleteHandle(Handle);
  347.     }
  348. }
  349.  
  350. BOOL
  351. ExternalCommandPanel(struct Window *Parent,STRPTR Command)
  352. {
  353.     LayoutHandle    *Handle;
  354.     BOOL         Result = FALSE;
  355.  
  356.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  357.         LH_LocaleHook,    &LocaleHook,
  358.     TAG_DONE))
  359.     {
  360.         STATIC LONG ButtonLabels[] =
  361.         {
  362.             MSG_XFER_BUTTON1_TXT,MSG_XFER_BUTTON2_TXT,
  363.             MSG_XFER_BUTTON3_TXT,MSG_XFER_BUTTON4_TXT,
  364.             MSG_XFER_BUTTON5_TXT,MSG_XFER_BUTTON6_TXT,
  365.             MSG_XFER_BUTTON7_TXT,MSG_XFER_BUTTON8_TXT,
  366.             MSG_XFER_BUTTON9_TXT,MSG_XFER_BUTTON10_TXT,
  367.         };
  368.  
  369.         struct Window    *PanelWindow;
  370.         UBYTE         LocalCommand[MAX_FILENAME_LENGTH];
  371.         LONG         i,Len,Max;
  372.  
  373.         strcpy(LocalCommand,Command);
  374.  
  375.         for(i = Max = 0 ; i < 10 ; i++)
  376.         {
  377.             if((Len = LT_LabelChars(Handle,LocaleString(ButtonLabels[i]))) > Max)
  378.                 Max = Len;
  379.         }
  380.  
  381.         LT_New(Handle,
  382.             LA_Type,    VERTICAL_KIND,
  383.         TAG_DONE);
  384.         {
  385.             LT_New(Handle,
  386.                 LA_Type,    VERTICAL_KIND,
  387.             TAG_DONE);
  388.             {
  389.                 LT_New(Handle,
  390.                     LA_Type,    STRING_KIND,
  391.                     LA_ID,        GAD_COMMAND,
  392.                     LA_LabelID,    MSG_XFER_COMMAND_TXT,
  393.                     LA_Chars,    50,
  394.                     LA_STRPTR,    LocalCommand,
  395.                     GTST_MaxChars,    MAX_FILENAME_LENGTH,
  396.                     LAST_Picker,    TRUE,
  397.                 TAG_DONE);
  398.  
  399.                 LT_New(Handle,
  400.                     LA_Type,    XBAR_KIND,
  401.                 TAG_DONE);
  402.  
  403.                 LT_EndGroup(Handle);
  404.             }
  405.  
  406.             LT_New(Handle,
  407.                 LA_Type,    VERTICAL_KIND,
  408.             TAG_DONE);
  409.             {
  410.                 LT_New(Handle,
  411.                     LA_Type,    HORIZONTAL_KIND,
  412.                     LAGR_SameSize,    TRUE,
  413.                 TAG_DONE);
  414.                 {
  415.                     for(i = 0 ; i < 5 ; i++)
  416.                     {
  417.                         LT_New(Handle,
  418.                             LA_Type,    BUTTON_KIND,
  419.                             LA_Chars,    Max,
  420.                             LA_ID,        GAD_BUTTON1 + i,
  421.                             LA_LabelID,    ButtonLabels[i],
  422.                         TAG_DONE);
  423.                     }
  424.  
  425.                     LT_EndGroup(Handle);
  426.                 }
  427.  
  428.                 LT_New(Handle,
  429.                     LA_Type,    HORIZONTAL_KIND,
  430.                     LAGR_SameSize,    TRUE,
  431.                 TAG_DONE);
  432.                 {
  433.                     for(i = 5 ; i < 10 ; i++)
  434.                     {
  435.                         LT_New(Handle,
  436.                             LA_Type,    BUTTON_KIND,
  437.                             LA_Chars,    Max,
  438.                             LA_ID,        GAD_BUTTON1 + i,
  439.                             LA_LabelID,    ButtonLabels[i],
  440.                         TAG_DONE);
  441.                     }
  442.  
  443.                     LT_EndGroup(Handle);
  444.                 }
  445.  
  446.                 LT_EndGroup(Handle);
  447.             }
  448.  
  449.             LT_New(Handle,
  450.                 LA_Type,VERTICAL_KIND,
  451.             TAG_DONE);
  452.             {
  453.                 LT_New(Handle,
  454.                     LA_Type,    XBAR_KIND,
  455.                     LAXB_FullSize,    TRUE,
  456.                 TAG_DONE);
  457.  
  458.                 LT_EndGroup(Handle);
  459.             }
  460.  
  461.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  462.                 LAGR_SameSize,    TRUE,
  463.                 LAGR_Spread,    TRUE,
  464.             TAG_DONE);
  465.             {
  466.                 LT_New(Handle,
  467.                     LA_Type,    BUTTON_KIND,
  468.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  469.                     LA_ID,        GAD_USE,
  470.                     LABT_ReturnKey,    TRUE,
  471.                     LABT_ExtraFat,    TRUE,
  472.                 TAG_DONE);
  473.  
  474.                 LT_New(Handle,
  475.                     LA_Type,    BUTTON_KIND,
  476.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  477.                     LA_ID,        GAD_CANCEL,
  478.                     LABT_EscKey,    TRUE,
  479.                     LABT_ExtraFat,    TRUE,
  480.                 TAG_DONE);
  481.  
  482.                 LT_EndGroup(Handle);
  483.             }
  484.  
  485.             LT_EndGroup(Handle);
  486.         }
  487.  
  488.         if(PanelWindow = LT_Build(Handle,
  489.             LAWN_TitleID,        MSG_EXTERNAL_PROGRAM_TXT,
  490.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  491.             LAWN_HelpHook,        &GuideHook,
  492.             LAWN_Parent,        Parent,
  493.             WA_DepthGadget,        TRUE,
  494.             WA_CloseGadget,        TRUE,
  495.             WA_DragBar,        TRUE,
  496.             WA_RMBTrap,        TRUE,
  497.             WA_Activate,        TRUE,
  498.             WA_SimpleRefresh,    TRUE,
  499.         TAG_DONE))
  500.         {
  501.             STATIC STRPTR Strings[] =
  502.             {
  503.                 " %f",
  504.                 " %m",
  505.                 " %p",
  506.                 " %d",
  507.                 " %u",
  508.                 " %<",
  509.                 " %>",
  510.                 " %s",
  511.                 " %b",
  512.                 " %c"
  513.             };
  514.  
  515.             struct IntuiMessage    *Message;
  516.             BOOL             Done = FALSE;
  517.             ULONG             MsgClass;
  518.             struct Gadget        *MsgGadget;
  519.  
  520.             GuideContext(CONTEXT_PARAMETERS);
  521.  
  522.             PushWindow(PanelWindow);
  523.  
  524.             LT_ShowWindow(Handle,TRUE);
  525.  
  526.             do
  527.             {
  528.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  529.                     break;
  530.  
  531.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  532.                 {
  533.                     MsgClass    = Message -> Class;
  534.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  535.  
  536.                     LT_ReplyIMsg(Message);
  537.  
  538.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  539.                         Done = TRUE;
  540.  
  541.                     if(MsgClass == IDCMP_GADGETUP)
  542.                     {
  543.                         switch(MsgGadget -> GadgetID)
  544.                         {
  545.                             case GAD_USE:
  546.  
  547.                                 strcpy(Command,LocalCommand);
  548.  
  549.                                 Result = Done = TRUE;
  550.                                 break;
  551.  
  552.                             case GAD_CANCEL:
  553.  
  554.                                 Done = TRUE;
  555.                                 break;
  556.  
  557.                             default:
  558.  
  559.                                 if(MsgGadget -> GadgetID >= GAD_BUTTON1 && MsgGadget -> GadgetID <= GAD_BUTTON8)
  560.                                 {
  561.                                     LT_LockWindow(PanelWindow);
  562.  
  563.                                     if(strlen(LocalCommand) + 3 < 255)
  564.                                     {
  565.                                         strcat(LocalCommand,Strings[MsgGadget -> GadgetID - GAD_BUTTON1]);
  566.  
  567.                                         LT_SetAttributes(Handle,GAD_COMMAND,
  568.                                             GTST_String,        LocalCommand,
  569.                                             LAST_CursorPosition,    -1,
  570.                                         TAG_DONE);
  571.                                     }
  572.                                     else
  573.                                         DisplayBeep(PanelWindow -> WScreen);
  574.  
  575.                                     LT_UnlockWindow(PanelWindow);
  576.                                 }
  577.  
  578.                                 break;
  579.                         }
  580.                     }
  581.  
  582.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  583.                     {
  584.                         struct FileRequester    *FileRequest;
  585.                         STRPTR             Index,Name,Args;
  586.  
  587.                         strcpy(SharedBuffer,LocalCommand);
  588.  
  589.                         Index = PathPart(SharedBuffer);
  590.  
  591.                         *Index++ = 0;
  592.  
  593.                         Name = Index;
  594.  
  595.                         while(*Index && *Index != ' ')
  596.                             Index++;
  597.  
  598.                         if(*Index == ' ')
  599.                         {
  600.                             *Index = 0;
  601.  
  602.                             Args = &LocalCommand[(ULONG)Index - (ULONG)&SharedBuffer[0] + 1];
  603.                         }
  604.                         else
  605.                             Args = NULL;
  606.  
  607.                         if(FileRequest = GetFile(Window,LocaleString(MSG_XFER_SELECT_COMMAND_TXT),SharedBuffer,Name,SharedBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT),FALSE))
  608.                         {
  609.                             LONG Len = strlen(SharedBuffer);
  610.  
  611.                             if(Len < 253 && Args)
  612.                             {
  613.                                 strcat(SharedBuffer," ");
  614.  
  615.                                 Len++;
  616.  
  617.                                 CopyMem(Args,SharedBuffer + Len,255 - Len);
  618.  
  619.                                 SharedBuffer[255] = 0;
  620.                             }
  621.  
  622.                             LT_SetAttributes(Handle,GAD_COMMAND,
  623.                                 GTST_String,SharedBuffer,
  624.                             TAG_DONE);
  625.  
  626.                             FreeAslRequest(FileRequest);
  627.                         }
  628.                     }
  629.                 }
  630.             }
  631.             while(!Done);
  632.  
  633.             PopWindow();
  634.         }
  635.  
  636.         LT_DeleteHandle(Handle);
  637.     }
  638.  
  639.     return(Result);
  640. }
  641.